package com.trip.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 
 * </p>
 *
 * @author hr
 * @since 2024-09-05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("trip_order")
public class TripOrder implements Serializable {

    private static final long serialVersionUID=1L;

    /** 订单id */
    @TableId(value = "order_id" ,type = IdType.AUTO)
    private Long orderId;

    /** 订单编号 */
    private String orderNum;

    /**
     * 用户id
     */
    private TripUser userId;

    /**
     * 司机id
     */
    private Driver driverId;

    /** 出行类型id -快车/专车 */
    @NotNull
    private Integer tripTypeId;

    /** 订单类型 -实时单/预约 */
    @NotNull
    private Integer orderType;

    /** 优惠卷id */
    private Long couponId;

    /** 小费金额 */
    private Integer tipNumber;

    /** 订单信息id */
    private Long orderInfoId;

//    1待接单（Pending）：司机接收到乘客请求后，订单进入待接单状态，此时司机可以选择是否接受订单。
//
//    2已接受（Accepted）：当司机确认并接受订单后，订单变为已接受状态，系统会通知乘客等待。
//
//    3行驶中（In Progress）：司机正在前往乘客指定地点的过程中，订单显示为行驶中状态。
//
//    4已完成（Completed）：司机到达目的地并完成服务，乘客下车后，订单状态变更为已完成，此时计费通常也已完成结算。
//
//    5取消（Cancelled by Passenger）：如果乘客在出行前主动取消订单，订单状态变为取消，通常费用退还给乘客。
//
//    6取消/拒绝（Cancelled by Driver）：司机在出发途中也可以选择取消订单，这时乘客可能需要支付部分费用作为违约金。
//
//    7超时未响应（Timed Out）：若超过预设时间司机仍未接单，系统自动将订单设置为超时状态，可能需要重新派发。
//
//    8特殊情况（Special Cases）：如临时不可用、特殊天气下的限行等，会有额外的状态来反映。

    private String status;

    /** 删除标志（0代表存在 2代表删除） */
    @TableLogic
    private String delFlag;

}
